// 请求模块
import axios from 'axios'
import store from '@/store/index.js'
import JSONBig from 'json-bigint' // JSON字符串转换为对象的时候JSON.parse()时会改变结果，用
import router from '../router'
// const jsonStr = '{ "art_id": 1245953273786007552 }'
// console.log(JSON.parse(jsonStr)) // 1245953273786007600
// console.log(jsonBig.parse(jsonStr).art_id.toString())
// 创建请求实例对象
const request = axios.create({
  // baseURL: 'http://192.168.17.27:8000/', // 基准路径
  baseURL: 'http://toutiao.itheima.net', // 移动端和pc都可以使用
  // transformResponse 允许自定义原始的响应数据（字符串）
  transformResponse: [
    function(data) {
      try {
        // 如果转换成功则返回转换的数据结果
        return JSONBig.parse(data)
      } catch (err) {
        // 如果转换失败，则包装为统一数据格式并返回
        return data
      }
    },
  ],
})
// 配置请求拦截器 为api统一添加 请求头token
request.interceptors.request.use(
  function(config) {
    // 在发送请求之前做些什么
    const { user } = store.state
    if (user && user.token) {
      config.headers.Authorization = `Bearer ${user.token}`
    }
    return config
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)
// 配置响应拦截器(可以拦截所有的401未授权失败，统一跳转到登录页)
// 添加响应拦截器
request.interceptors.response.use(
  function(response) {
    // 对响应数据做点什么
    return response
  },
  function(error) {
    // 对响应错误做点什么
    if (error.response && error.response.status === 401) {
      return router.push('/login')
    }
    return Promise.reject(error)
  }
)
// 导出请求实例对象
export default request
